package com.wyz.saas.common.utils

import androidx.recyclerview.widget.DiffUtil
import com.wyz.saas.api.data.EntityDiffer

class DiffUiDataCallback<T : EntityDiffer<T>> : DiffUtil.Callback{

    private val mOldList: List<T>
    private val mNewList: List<T>

    constructor(mOldList: List<T>, mNewList: List<T>) : super() {
        this.mOldList = mOldList
        this.mNewList = mNewList
    }

    // 两个类是否就是同一个东西，比如Id相等的User
    override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean = mNewList[newItemPosition].isSame(mOldList[oldItemPosition])

    override fun getOldListSize(): Int = mOldList.size

    override fun getNewListSize(): Int = mNewList.size
    // 在经过相等判断后，进一步判断是否有数据更改
    // 比如，同一个用户的两个不同实例，其中的name字段不同
    override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean = mNewList[newItemPosition].isUiContentSame(mOldList[oldItemPosition])
}